
import json
import os
from openai import OpenAI

client = OpenAI(
    # This is the default and can be omitted
    api_key=os.environ.get("OPENAI_API_KEY"),
)

# 读取 JSON 文件
with open('datatest.json', 'r', encoding='utf-8') as file:
    books_data = json.load(file)

# 用于存储处理后的数据
processed_data = []

# 循环处理每本书的数据
for book_data in books_data:
    # 获取书籍的相关介绍
    # introduction = book_data.get('相关介绍', '无')

    # 设置 OpenAI 的 prompt
    prompt = f"""
我将给你提供一本书以及其作者的相关信息，包括了书名、作者、相关介绍等。请假设你是一个专业的学者，你需要根据这些已知的信息设计至少五个针对性的问题，让读者能通过阅读你的问题快速了解这本书及其作者的相关信息。
问题的内容要求：
1.你应该至少包括一个关于书籍本身内容的问题，至少包括一个关于作者相关的问题。确保你的所有问题都能用我提供给你的信息回答。
2.在问题中必须明确指明对象，如果提到书籍必须指明书名，如果提到作者必须指明作者名称，不能用“这本书”、“他”代替（如果我没有提供作者姓名，就用“《xx书名》的作者”代替。）
3.问题中不可以出现“文中提到”、“这本书”这样的字眼，也即不能假设读者已经看到过我给你的信息。虽然你的提问要基于我给你的信息，但如果你的提问中包含文中的一些的背景信息，你必须在问题中再次提供这些信息，不能假设读者已经阅读了我提供的信息。
问答的格式：
每个问题前用序号标明，并且每个问题之间只要用一个"\n"隔开，格式示例如下：
1. 问：《易原就正十二卷》的作者的背景是怎样的？\n2. 问：《易原就正十二卷》的主要内容？\n3. 问：《易原就正十二卷》与其他关于《易经》的书籍有什么不同之处？\n4. 问：作者包仪在《易原就正十二卷》中极力推崇什么学问？
我给你的信息如下：{book_data}
"""
# 我将给你提供一本书以及其作者的相关信息，包括了书名、作者、相关介绍等。请假设你是一个专业的学者，你需要根据这些已知的信息设计至少五个针对性的问答对，让读者能通过阅读你的问答对快速了解这本书及其作者的相关信息。
# 问答的内容要求：
# 1.你应该至少包括一个关于书籍本身内容的问题，至少包括一个关于作者相关的问题。要确保你的问答包含尽量多的信息（比如：如果问题是“《聊翁易传》作者是谁？”，那回答中不仅要包括作者的名字，还要包括作者的背景及其他相关信息），理论上我提供给你的所有信息应分布在你的所有问答中。
# 2.在问题中必须明确指明对象，如果提到书籍必须指明书名，如果提到作者必须指明作者名称，不能用“这本书”、“他”代替（如果我没有提供作者姓名，就用“《xx书名》的作者”代替。）
# 3.问题中不可以出现“文中提到”、“这本书”这样的字眼，也即不能假设读者已经看到过我给你的信息。虽然你的提问要基于我给你的信息，但如果你的提问中包含文中的一些的背景信息，你必须在问题中再次提供这些信息，不能假设读者已经阅读了我提供的信息。
# 问答的格式必须严格按照要求,以便后期处理：
# 每个问题前用序号标明，并且每个问题之间只要用一个"\n"隔开，请严格按照如下示例：
# 1. 问：《易原就正十二卷》的作者是谁？\n2. 问：《易原就正十二卷》是在哪个时期出版的？\n3. 问：作者包仪的个人背景是怎样的？\n4. 问：《易原就正十二卷》与其他关于《易经》的书籍有什么不同之处？\n5. 问：作者包仪在《易原就正十二卷》中极力推崇什么学问？
# 我给你的信息如下：{book_data}

    # 使用 OpenAI GPT-3 处理 prompt
    completion = client.chat.completions.create(
    messages=[
        {
            "role": "user","content": prompt,
        }
    ],
    model="gpt-3.5-turbo",
    )

    # 获取 OpenAI 处理后的回答
    generated_question = completion.choices[0].message.content

    # 添加【相关提问】字段
    book_data['相关提问'] = generated_question

    # 将处理后的数据添加到结果列表中
    processed_data.append(book_data)
    print(f"{book_data['书名']} 已完成。")

# 将结果写入新的 JSON 文件
with open('processed_data401-800.json', 'w', encoding='utf-8') as output_file:
    json.dump(processed_data, output_file, ensure_ascii=False, indent=2)
print("processed_data801-1000.json完成")